/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import media.Media;
import media.Photo;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;
import vue.FicheMediaAbstract;
import vue.FicheMediaPhoto;

/**
 * Classe PhotoDAO qui permet d'accéder aux photos de l'application
 * @author Florian Minin & Khémon Beh
 */
public class PhotoDAO implements  MediaDAO<Photo> {

    private SortedMap<Integer, Photo> listePhoto;

    /**
     * Constructeur de la classe PhotoDAO
     */
    public PhotoDAO() {
        //Appelle le constructeur de la super classe
        listePhoto = new TreeMap<Integer, Photo>();
    }

    public void ajouter(Photo photo) {
        int cle;
        if (listePhoto.isEmpty()) {
            cle = 1;
        } else {
            cle = listePhoto.lastKey() + 1;
        }
        photo.setIdMedia(cle);
        listePhoto.put(cle, photo);
    }

    public void modifier(Photo photo) {
        listePhoto.put(photo.getIdMedia(), photo);
    }

    public void supprimerMedia(Photo photo) {
        listePhoto.remove(photo.getIdMedia());
    }

    public void noter(Photo photo, int note) {
        photo.setNote(note);
        listePhoto.put(photo.getIdMedia(), photo);
    }

    public Media getMedia(int id) {
        Media m = listePhoto.get(id);
        return m;

    }

    public List<Photo> getListMedia() {
        List l = new ArrayList();
        Set cles = listePhoto.keySet();
        Iterator iterator = cles.iterator();

        while (iterator.hasNext()) {
            l.add(listePhoto.get(iterator.next()));
        }
        return l;
    }

    public SortedMap<Integer, Photo> getMapMedia() {
        return listePhoto;
    }

    public void setMapMedia(SortedMap<Integer, Photo> listePhoto) {
        this.listePhoto = listePhoto;
    }

    public Media creeMediaGenerique() {
        return new Photo();
    }

    public String getTypeMedia() {
        return "Photo";
    }

    public FicheMediaAbstract getFicheMedia() {
        return new FicheMediaPhoto();
    }
}
